function zernikep =zernikepolynomial(zc,Apert)

n1=1.5154;
n2=1.6693;
CT1=2.5e-3;
CT2=1.5e-3;
R1=22.16e-3;
R2=15.98e-3;
R3=46.14e-3;

[dim1,dim2]=size(Apert);
dim=sum(Apert(:,floor(dim1/2)));
dim=dim+mod(dim,2);
rang=linspace(-1,1,dim);
[X,Y]=meshgrid(rang,rang);
A=atan2(Y,X);
p=hypot(X,Y);
z1=zc(1)*4^(1/2)*p.*cos(A);
z2=zc(2)*4^(1/2).*p.*sin(A);
z3=zc(3)*3^(1/2).*(2*p^2-1);
z4=zc(4)*6^(1/2).*(p^2.*sin(2*A));
z5=zc(5)*6^(1/2).*(p^2.*cos(2*A));
z6=zc(6)*8^(1/2).*(3.*p^3-2*p).*sin(A);


z7=zc(7)*8^(1/2).*(3.*p^3-2*p).*cos(A);
z8=zc(8)*8^(1/2).*(p^3).*sin(3*A);
z9=zc(9)*8^(1/2).*(p^3).*cos(3*A);
z10=zc(10)*5^(1/2).*(6*p.^4-6*p.^2+1);
z11=zc(11)*10^(1/2).*(4*p^4-3*p^2).*cos(2*A);
z12=zc(12)*10^(1/2).*(4*p^4-3*p^2).*sin(2*A);


z13=zc(13)*10^(1/2)*(p^4).*cos(4*A);
z14=zc(14)*10^(1/2)*(p^4).*sin(4*A);
z15=zc(15)*12^(1/2)*(10*p^5-12*p^3+3*p).*cos(2*A);
z16=zc(16)*12^(1/2)*(10*p^5-12*p^3+3*p).*sin(2*A);
z17=zc(17)*12^(1/2)*(5*p^5-4*p^3).*cos(3*A);
z18=zc(18)*12^(1/2)*(5*p^5-4*p^3).*sin(3*A);
zernikep=z1+z2+z3+z4+z5+z6+z7+z8+z9+z10+z11+z12+z13+z14+z15+z16+z17+z18;
zernikep=exp(j*2*pi*zernikep);
if dim1~=dim
    z=abs(dim1-dim);
    zernikep=padarray(zernikep,[z/2,z/2]);
zernikeP = zernikep .* Apert;
end




